// pages/pay/pay.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    //存放用户地址信息
    address: {},
    //购物车数据
    cart: [],
    //总价格
    totalPrice: 0,
    //总数量
    totalNum: 0
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    let address = wx.getStorageSync('address');
    let cart = wx.getStorageSync('cart');
    cart = cart.filter(item => item.checked)
    let totalPrice = 0;
    let totalNum = 0;
    cart.forEach(item => {
      totalPrice += item.goods_price * item.num;
      totalNum += item.num;
    });
    this.setData({
      address, cart, totalPrice, totalNum
    });
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  //点击支付按钮触发事件
  onPayClick: async function () {
    try {

      // 1、先判断有没有tokent值
      let token = wx.getStorageSync("token");
      if (!token) {//如果没有 跳转到登录授权登录
        wx.navigateTo({
          url: "/pages/auth/index",
        })
      }

      //3、token值存在 创建订单
      let goods = [];
      this.data.cart.forEach(item => {
        goods.push({
          goods_id: item.goods_id,
          goods_number: item.goods_number,
          goods_price: item.goods_price,
        })
      })

      let sendData = {
        order_price: this.data.totalPrice,
        consignee: this.data.address.all,
        goods: goods
      }

      let orderInfo = await wx.myApi.createOrder(sendData);
      //获取订单id成功

      let { order_number } = orderInfo.data.message;
      //通过发送订单id到服务器，服务器后台获取微信支付参数
      let payInfo = await wx.myApi.reqUnifiedorder({ order_number });
      let { pay } = payInfo.data.message;
      //获取玩预支付参数之后 调用wx.requestPayment 发起支付请求（此时用户手机会显示支付二维码）
      await wxApi.requestPayment(pay);
      //当用户支付成功之后 向后台服务器发送支付请求结果
      let checkOrder = await wx.myApi.checkOrder({ order_number })
      console.log("checkOrder===>订单状态", checkOrder)
    } catch (err) {
      //异常捕获 无论是代码报错还是接口出现问题 或者 电泳微信api出现问题，最终都会在此显示出来
      await wxApiwx.showToast({
        title: '支付失败',
      })
    }
  }
})